package com.springsummer.information.green.beans;


public interface BeanDefinition {

    public String getBeanId();

    public String getBeanClassName();

    //String getBeanClassName();

    public String getBeanName();

    public String getScope();

    public String getFactoryBeanClassName();

    public String getFactoryMethodName();

    //String getFactoryBeanName();
    //String getFactoryMethodName();

    String getDestroyMethodName();

    String getInitMethodName();

    boolean isSingleton();

    boolean isPrototype();

    MutableConstructorArgValues getConstructorArgumentValues();


    default boolean hasConstructorArgumentValues() {
        return !getConstructorArgumentValues().isEmpty();
    }


    MutablePropertyValues getPropertyValues();


    default boolean hasPropertyValues() {
        return !getPropertyValues().isEmpty();
    }

    void setLazyInit(boolean lazyInit);

    /**
     * Return whether this bean should be lazily initialized, i.e. not
     * eagerly instantiated on startup. Only applicable to a singleton bean.
     */
    boolean isLazyInit();

}
